package com.example.teachingMaterial.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.model.pojo.TeachingMaterial;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Map;

/**
 * 教学资料Service接口
 * 定义教学资料相关的业务逻辑方法
 */
public interface TeachingMaterialService {

    /**
     * 上传教学资料
     * @param title 资料标题
     * @param description 资料描述
     * @param file 资料文件
     * @param category 资料分类
     * @return 上传结果
     * @throws IOException 文件操作异常
     */
    Map<String, Object> uploadMaterial(String title, String description, MultipartFile file, 
                                     Integer category) throws IOException;

    /**
     * 获取教学资料列表
     * @param category 资料分类（可选）
     * @param page 页码
     * @param size 每页数量
     * @return 分页后的资料列表
     */
    Map<String, Object> getMaterialList(Integer category, Integer page, Integer size);

    /**
     * 根据ID获取教学资料
     * @param id 资料ID
     * @return 教学资料对象
     */
    TeachingMaterial getMaterialById(Integer id);

    /**
     * 删除教学资料
     * @param id 资料ID
     * @return 删除结果
     */
    boolean deleteMaterial(Integer id);

    /**
     * 下载教学资料
     * @param id 资料ID
     * @return 资料文件路径和文件名
     */
    File downloadMaterial(Integer id) throws IOException;
}